package com.maxatime.util;
	
import java.sql.Types;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.config.rules.DbColumnType;

public class MybatisPlusGeneratorFast {
	
    public static void main(String args[]) {
        
        System.out.println("Mybatis Plush code generator begin ");
        
        DataSourceConfig.Builder dataSourceConfig = new DataSourceConfig.Builder("jdbc:mysql://localhost:3306/zhuiyun","root","root123");
        
        // FastAutoGenerator.create("url", "username", "password")
        FastAutoGenerator.create(dataSourceConfig)
        .globalConfig(builder -> {
            builder.author("Ssb") // 设置作者
                // .enableSwagger() // 开启 swagger 模式
                // .fileOverride() // 覆盖已生成文件
                .outputDir("F:\\generator\\MybaisPlus"); // 指定输出目录
        })
        .dataSourceConfig(builder -> builder.typeConvertHandler((globalConfig, typeRegistry, metaInfo) -> {
            int typeCode = metaInfo.getJdbcType().TYPE_CODE;
            if (typeCode == Types.SMALLINT) {
                // 自定义类型转换
                return DbColumnType.INTEGER;
            }
            return typeRegistry.getColumnType(metaInfo);

        }))
        .packageConfig(builder -> {
            builder.parent("com.maxatime") // 设置父包名
                    // .moduleName("system") // 设置父包模块名
                    .controller("controller")
                    .service("service")
                    .serviceImpl("service.impl")
                    .mapper("dao")
                    .entity("pojo.entity")
                .pathInfo(Collections.singletonMap(OutputFile.xml, "F:\\generator\\MybaisPlus")); // 设置mapperXml生成路径
        })
        .strategyConfig(builder -> {
            builder.addInclude("");// 设置需要生成的表名
            builder.addInclude("sys_user") // 设置需要生成的表名

                // .addTablePrefix("t_", "c_"); // 设置过滤表前缀
            .mapperBuilder().enableBaseColumnList().enableBaseResultMap()
            ;
        })
        // .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板，默认的是Velocity引擎模板
        .execute();

        System.out.println("Mybatis Plush code generator begin ");
        
    }

    // 处理 all 情况
    protected static List<String> getTables(String tables) {
        return "all".equals(tables) ? Collections.emptyList() : Arrays.asList(tables.split(","));
    }
	
}
